pcworld online logo

CAPSLOCK VE NUMLOCK'U KODLA DE╨▌▐T▌RMEK

Visual Basic 4.0 paketi tu■ kilitlerini de≡i■tirmek ve g÷rⁿntⁿlemek iτin "Keyboard State Control"'unu (KEYSTA32.OCX) birlikte getiriyor. Bu kontrolⁿ kullanarak ve kⁿτⁿk bir kod sat²r² yazarak program²n²z τal²■²rken CAPSLOCK, NUMLOCK ve SCROLLLOCK kilitlerini aτ²p kapayabilirsiniz.

Peki program²n²z² derleyip kurulum paketinin olu■turdu≡unuzda ne olacak? ▐ⁿphesiz ilgili kontrol de uygulaman²z ile brilikte program² kurdu≡unuz sisteme kopyalanacak. Bizce bu kadar kⁿτⁿk bir i■lemi gerτekle■tiren bir kontrolⁿ kullanarak uygulaman²z² kalabal²kla■t²rmak anlams²z, ayn² i■lemi bir WIN32 API'sini kullanarak da gerτekle■tirebilirsiniz.

╓rne≡imizi uygulamak iτin ⁿzerinde ⁿτ tane komut butonu bir de etiket kontrolⁿ olan bir form olu■turun ve ilk a■amada bo■ bir BAS modⁿlⁿnⁿn General - Declarations b÷lⁿmⁿne a■a≡²daki sat²rlar² girin.

Public Const VK_CAPITAL = &H14

Public Type KeyboardBytes 
kbByte(0 To 255) As Byte
End Type

Public kbArray As KeyboardBytes
Public Declare Function GetKeyState Lib "user32"
(ByVal nVirtKey As Long) As Long
Public Declare Function GetKeyboardState Lib
"user32" (kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib
"user32" (kbArray As KeyboardBytes) As Long

'A■a≡²daki kodlar olu■turdu≡nuz formun 
'General  - Declarations b÷lⁿmⁿne girmelidir:
Private Function CapsLock() As Integer
CapsLock = GetKeyState(VK_CAPITAL) And 1 = 1
End Function

Private Command1_Click()
GetKeyboardState kbArray

kbArray.kbByte(VK_CAPITAL) = 
IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)

SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1, "Aτ²k", "Kapal²")
End Sub

Private Sub Command2_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 1
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1, "Aτ²k ", "Kapal²")
End Sub

Private Sub Command3_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 0
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1, "Aτ²k ", "Kapal²")
End Sub